﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

 namespace projekt_1._0
{
    public class AlkalmazottakDal
    {
        private String Nev;
        private String Helyseg;
        private String Cim;
        private double Fizetes;
        private String Beosztas;
        private String Cnp;
        private String Telefon;
        private String[] BeosztasNev;
        private int [] BeosztasId;
        private int BeosztasSorokSzama = 0;//A beosztas tabla sorainak a szama
        private int BeosztasIdKivalasztott;
   
   
        //a data grid feltoltese a textbox szuro alapjan
        public void DgwFill(DataGridView dataGridView1, TextBox KezdoBetuT, SqlConnection cn)
        {
         
                String TempS;
                TempS = KezdoBetuT.Text.ToString();
                TempS = TempS.ToUpper();
                if (TempS == "")
                {
                    TempS = "N";
                }
                SqlDataAdapter da = new SqlDataAdapter(
                                                        "Select  Nev, Helyseg, Cim, BeosztasNev, Fizetes, Telefonszam, Cnp "+
                                                        "From Alkalmazottak, Beosztasok " +
                                                         "Where Alkalmazottak.BeosztasID=Beosztasok.BeosztasID AND " +
                                                         "Alkalmazottak.Nev Like \'" + TempS.ToString() + "%\' AND " +
                                                         "Fizetes <> '0'"
                                                         , cn);
                DataSet ds = new DataSet();
                da.Fill(ds, "Alkalmazottak");
                dataGridView1.DataSource = ds.Tables["Alkalmazottak"].DefaultView;
                      
        }
        
        //a min fizetes check box szuronek a megvalositasa
        public void MinFizetes(DataGridView dataGridView1, SqlConnection cn)
        {
            SqlDataAdapter da = new SqlDataAdapter(
                                                        "SELECT Nev, Fizetes "+
                                                        "FROM Alkalmazottak "+
                                                        "WHERE Fizetes = "+
                                                        "(SELECT MIN(Fizetes) "+
                                                         "FROM Alkalmazottak)",cn);
            DataSet ds = new DataSet();
            da.Fill(ds, "Alkalmazottak");
            dataGridView1.DataSource = ds.Tables["Alkalmazottak"].DefaultView;

        }
        //A maxfizetes checkboxnak a megvalositasa
        public void MaxFizetes(DataGridView dataGridView1, SqlConnection cn)
        {
            SqlDataAdapter da = new SqlDataAdapter(
                                                        "SELECT Nev, Fizetes " +
                                                        "FROM Alkalmazottak " +
                                                        "WHERE Fizetes = " +
                                                        "(SELECT Max(Fizetes) " +
                                                         "FROM Alkalmazottak)", cn);
            DataSet ds = new DataSet();
            da.Fill(ds, "Alkalmazottak");
            dataGridView1.DataSource = ds.Tables["Alkalmazottak"].DefaultView;

        }
        //az atlagfizetes checkbox nak a megvalositasa
        public void AtlagFiztes(DataGridView dataGridView1, SqlConnection cn)
        {
            SqlDataAdapter da = new SqlDataAdapter("Select AVG(Fizetes) Atlagfizetes "+
                                                   "From Alkalmazottak",cn);

            DataSet ds = new DataSet();
            da.Fill(ds, "Alkalmazottak");
            dataGridView1.DataSource = ds.Tables["Alkalmazottak"].DefaultView;


        }
        //Az atlagfizetes beosztasonkent checkboxnak a megvalositasa
        public void AtlagFizetesBeosztasonkent(DataGridView dataGridView1, SqlConnection cn)
        {
            SqlDataAdapter da = new SqlDataAdapter(
                                                    "Select Beosztasok.BeosztasNev, AVG(Fizetes) " +
                                                    "From Alkalmazottak, Beosztasok " +
                                                    "Where Beosztasok.BeosztasID=Alkalmazottak.BeosztasID " +
                                                    "Group by Beosztasok.BeosztasNev", cn);


            DataSet ds = new DataSet();
            da.Fill(ds, "Alkalmazottak");
            dataGridView1.DataSource = ds.Tables["Alkalmazottak"].DefaultView;


        }
        //A nev valtozo inicializalasa a textbox alapjan
        public void BellitNev(TextBox tb)
        {
            Nev = tb.Text.ToString();

         }
        //A helyseg inicializasa a textbox alapjan
        public void BeallitHelyseg(TextBox tb)
        {
            Helyseg = tb.Text.ToString();
        }
        // A cim inicializalasa a textbox alapjan
        public void BeallitCim(TextBox tb)
        {
            Cim = tb.Text.ToString();
        }
        //A fizetes beallitasa a textbox alapjan
        public void BeallitFizetes(TextBox tb)
        {
                bool isNum = double.TryParse(tb.Text.ToString(), out Fizetes);

                if (isNum != true)
                {
                    MessageBox.Show("Nem megfelelo a beirt tipus \n fizetesnek");
                }                      
        }
        //A combo ertenek lekerdezese
        public void BeallitCombo(ComboBox cb)
        {
            Beosztas = cb.Text.ToString();
           for (int i =0;i<BeosztasSorokSzama;i++)
            {
                
                if (BeosztasNev[i]==Beosztas)
                {
                    BeosztasIdKivalasztott = BeosztasId[i];
                    break;
                }
            }
            
            
            
        }
        //a combo feltoltese
        public void ComboFill(ComboBox cb, SqlConnection cn)
        {
            SqlDataAdapter da = new SqlDataAdapter("Select * From Beosztasok", cn);
            DataSet ds = new DataSet();
            da.Fill(ds, "Beosztasok");
            cb.DataSource = ds.Tables["Beosztasok"];
            cb.DisplayMember = "BeosztasNev";
            DataTable dt = new DataTable();
            dt = ds.Tables["Beosztasok"];
            BeosztasSorokSzama = 0;
            //Eltarolom a Beosztasok nevet es Id-at h ne keljen ujra kapcsolodja az 
            //uj elem bevitelenel a combo box bol valo kivalasztas eseten
            foreach (DataRow row in dt.Rows)
            {
                BeosztasSorokSzama++;
                
            }
            BeosztasNev = new String[BeosztasSorokSzama];
            BeosztasId = new int[BeosztasSorokSzama];
            for (int i = 0; i < BeosztasSorokSzama; i++)
            {
                
                BeosztasNev[i] = ds.Tables["Beosztasok"].Rows[i][1].ToString();
                BeosztasId[i] = (int)ds.Tables["Beosztasok"].Rows[i][0];
                
            }
                 
           

        }
        //a Cnp beallitasa a textbox alapjan
        public void BeallitCnp(TextBox tb)
        {
            Cnp = tb.Text.ToString();
        }
        //a Telefonszam beallitasa a textbox alapjan
        public void BeallitTelefon(TextBox tb)
        {
            Telefon = tb.Text.ToString();
        }
        //tulajdonkeppeni beszuras
        public bool Mentes(SqlConnection cn)
        {
            switch (MessageBox.Show("A kovetkezo adatok lesznek elmentve az Alkalmazottak tablaba: \n Cnp "+Cnp+"\n Nev: "+Nev+"\n Helyseg: "+Helyseg+"\n Cim: "+Cim +"\nTelefonszam: "+Telefon+ "\n Beosztas: "+Beosztas + "\n Fizetes: " + Fizetes.ToString(),
                         "Mentes?",
                         MessageBoxButtons.YesNo,
                         MessageBoxIcon.Question))
            {
                case DialogResult.Yes:
                    SqlDataAdapter da = new SqlDataAdapter("Insert into Alkalmazottak "+
                                                           "Values (\'" + Cnp + "\',\'" + BeosztasIdKivalasztott + "\',\'" + Nev + "\',\'" + Helyseg + "\',\'" + Cim + "\',\'" + Telefon + "\',\'" + Fizetes + "\')"
                                                           , cn);
                    SqlDataAdapter da2 = new SqlDataAdapter("Select * From Alkalmazottak", cn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Alkalmazottak");
                    da2.Fill(ds, "Alkalmazottak");
                    da.Update(ds.Tables["Alkalmazottak"]);
                      
                    
                    break;
                case DialogResult.No:
                    return false;
                    break;
              }
            return true;
        }
        public bool MentesModositasUtan(SqlConnection cn)
        {
            switch (MessageBox.Show("A kovetkezo adatok lesznek elmentve az Alkalmazottak tablaba: \n Cnp " + Cnp + "\n Nev: " + Nev + "\n Helyseg: " + Helyseg + "\n Cim: " + Cim + "\nTelefonszam: " + Telefon + "\n Beosztas: " + Beosztas + "\n Fizetes: " + Fizetes.ToString(),
                         "Mentes?",
                         MessageBoxButtons.YesNo,
                         MessageBoxIcon.Question))
            {
                case DialogResult.Yes:
                  
                    SqlDataAdapter da = new SqlDataAdapter("Update Alkalmazottak " +
                                                           "Set Cnp = \'" + Cnp + "\',BeosztasID = \'" + BeosztasIdKivalasztott + "\',Nev = \'" + Nev + "\',Helyseg = \'" + Helyseg + "\',Cim = \'" + Cim + "\',Telefonszam = \'" + Telefon + "\',Fizetes = \'" + Fizetes + "\' "+
                                                           "Where Cnp = \'" + Cnp + "\' "
                                                           , cn);
                    SqlDataAdapter da2 = new SqlDataAdapter("Select * From Alkalmazottak", cn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Alkalmazottak");
                    da2.Fill(ds, "Alkalmazottak");
                    da.Update(ds.Tables["Alkalmazottak"]);

                    
                    
                    break;
                    case DialogResult.No:
                    return false;
                    break;
            }
            return true;
        }
        public void FeltoltModositashoz(TextBox tbNev,TextBox tbCnp,TextBox tbHelyseg, TextBox tbCim, TextBox tbFizetes, ComboBox cbBeosztas, TextBox tbTelefon, DataGridView dgw)
        {
            
            tbCnp.Text = dgw.CurrentRow.Cells[6].Value.ToString();
            cbBeosztas.Text = dgw.CurrentRow.Cells[3].Value.ToString();
            tbNev.Text = dgw.CurrentRow.Cells[0].Value.ToString();
            tbHelyseg.Text = dgw.CurrentRow.Cells[1].Value.ToString();
            tbCim.Text = dgw.CurrentRow.Cells[2].Value.ToString();
            tbTelefon.Text = dgw.CurrentRow.Cells[5].Value.ToString();
            tbFizetes.Text = dgw.CurrentRow.Cells[4].Value.ToString();
        }
        public void Torol(DataGridView dgw, SqlConnection cn)
        {
            switch (MessageBox.Show("Biztosan torolni szeretne a kivalasztott sort?",
                        "Torles?",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question))
            {
                case DialogResult.Yes:
                    String Cnp2;
                    Cnp2 = dgw.CurrentRow.Cells[6].Value.ToString();
                    SqlDataAdapter da = new SqlDataAdapter("Update Alkalmazottak " +
                                                              "Set Fizetes = '0' " +
                                                              "Where Cnp = \'" + Cnp2 + "\' "
                                                              , cn);
                    SqlDataAdapter da2 = new SqlDataAdapter("Select * From Alkalmazottak", cn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Alkalmazottak");
                    da2.Fill(ds, "Alkalmazottak");
                    da.Update(ds.Tables["Alkalmazottak"]);
                    break;
                case DialogResult.No:
                    break;
            }


        }

            
    }

}
